﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ICE.Vacations.Request;
using System.Web.Mvc;
using ICE.Vacations.DataBase;
using ICE.Vacations.Helper.Services;
using ICE.Vacations.Helper;
using System.Collections;
using System.Data.SqlClient;

namespace WEBICE_4.Controllers
{
    public class HomeController : Controller
    {
        public SQLDataClass sql = new SQLDataClass();

        [HttpGet]
        public ActionResult Prueba()
        { return View(); }
       
        public ActionResult Index()
        {
            ConfigApp.LoadConfig();

            ViewBag.Message = "Modifique esta plantilla para poner en marcha su aplicación ASP.NET MVC.";  
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Página de descripción de la aplicación.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Página de contacto.";

            return View();
        }

        
        public ActionResult Solicitud() 
        {
            Services.sendLog("usuario a utilizar ["+User.Identity.Name.Split('\\')[1].ToString().ToLower()+"]",Services.errorType.InformationMessage);

            return View();
        }

        [HttpPost]
        public ActionResult CrearSolicitud(FormCollection formulario)
        {
            ViewBag.Message = formulario["txtEmployeeID"].ToString();
            try
            {

                //formulario["requestID"]. = sql.getConsecutivo();
                Request doc = new Request();
                
                Services.sendLog("Creando Solicitud...", Services.errorType.InformationMessage);
                
                doc.requestID = formulario["requestID"].ToString();
                Services.sendLog("ID de Solicitud [" + doc.apellido1 + "].", Services.errorType.InformationMessage);
                
                doc.apellido1 = formulario["txtApellido1"].ToString();
                Services.sendLog("Primer Apellido [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                doc.apellido2 = formulario["txtApellido2"].ToString();
                Services.sendLog("Segundo Apellido [" + doc.apellido2 + "].", Services.errorType.InformationMessage);

                doc.aprobador1 = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Aprobador 1 [" + doc.aprobador1 + "].", Services.errorType.InformationMessage);

                doc.aprobador2 = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Aprobador 2 [" + doc.aprobador2 + "].", Services.errorType.InformationMessage);

                doc.aprobador3 = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Aprobador 3 [" + doc.aprobador3 + "].", Services.errorType.InformationMessage);

                doc.bossID = formulario["txtEmployeeID"].ToString();
                Services.sendLog("ID del Jefe [" + doc.bossID + "].", Services.errorType.InformationMessage);

                doc.cod_cf = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Codigo Centro Funcional [" + doc.cod_cf + "].", Services.errorType.InformationMessage);

                doc.cod_direccion = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Código de dirección[" + doc.cod_direccion + "].", Services.errorType.InformationMessage);

                doc.date = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Fecha [" + doc.date + "].", Services.errorType.InformationMessage);

                doc.dateFrom = DateTime.Now.ToString("dd/MM/yyyy"); // formulario["txtEmployeeID"].ToString();
                Services.sendLog("Fecha Desde [" + doc.dateFrom + "].", Services.errorType.InformationMessage);

                doc.dateTo = DateTime.Now.ToString("dd/MM/yyyy"); //// formulario["txtEmployeeID"].ToString();
                Services.sendLog("Fecha Hasta [" + doc.dateTo + "].", Services.errorType.InformationMessage);

                doc.docUnit = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Unidad Documental [" + doc.docUnit + "].", Services.errorType.InformationMessage);

                doc.eMail = formulario["eMail"].ToString();
                Services.sendLog("Email [" + doc.eMail + "].", Services.errorType.InformationMessage);

                doc.employeeID = formulario["txtEmployeeID"].ToString();
                Services.sendLog("ID del empleado [" + doc.employeeID + "].", Services.errorType.InformationMessage);

                doc.employeeName = formulario["txtemployeeName"].ToString();
                Services.sendLog("Nombre del empleado [" + doc.employeeName + "].", Services.errorType.InformationMessage);

             
                Services.sendLog("ID de Solicitud [" + doc.requestID + "].", Services.errorType.InformationMessage);

                doc.revision = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Primer Apellido [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                doc.state = "POR APROBACIÓN";// formulario["txtEmployeeID"].ToString();
                Services.sendLog("Estado de la solicitud [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                doc.tipo = formulario["txtEmployeeID"].ToString();
                Services.sendLog("Primer Apellido [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                doc.totalDays = 1; // Convert.ToInt32(formulario["txtEmployeeID"].ToString());
                Services.sendLog("Total de Días Disponibles [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                doc.totalRequestedDays = 1;// Convert.ToInt32(formulario["txtEmployeeID"].ToString());
                Services.sendLog("Total de Días Solicitados [" + doc.totalRequestedDays + "].", Services.errorType.InformationMessage);

                doc.username = User.Identity.Name.Split('\\')[1].ToLower();//formulario["txtEmployeeID"].ToString();
                Services.sendLog("Usuario [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                doc.year = DateTime.Now.Year.ToString();// formulario["txtEmployeeID"].ToString();
                Services.sendLog("Año [" + doc.apellido1 + "].", Services.errorType.InformationMessage);

                #region LLenado de Aprobadores
                try
                {
                    SqlDataReader reader = sql.Buscar_Recurso(doc.employeeID);

                    if (reader.HasRows)
                    {
                        reader.Read();
                        doc.aprobador1 = reader.GetSqlValue(reader.GetOrdinal("APROBADOR1")).ToString();

                        if (reader.GetSqlValue(reader.GetOrdinal("APROBADOR2")).ToString().ToUpper().Equals("NULL"))
                        {
                            doc.aprobador2 = "N";
                        }
                        else
                        {
                            doc.aprobador2 = reader.GetSqlValue(reader.GetOrdinal("APROBADOR2")).ToString();
                        }

                        if (reader.GetSqlValue(reader.GetOrdinal("APROBADOR3")).ToString().ToUpper().Equals("NULL") )
                        {
                            doc.aprobador3 = "N";
                        }
                        else { doc.aprobador3 = reader.GetSqlValue(reader.GetOrdinal("APROBADOR3")).ToString(); }
                    }
                   
                }
                catch (Exception exc)
                { 
                }
                
                #endregion
                // Ya llenado el formulario se procede a crear la solicitud.
                doc.CreateRequest(doc);
                Services.sendLog("Solicitud [" + doc.requestID + "] creada satisfactoriamente.", Services.errorType.InformationMessage);

                

            }
            catch (Exception exc)
            {
 
            }

            return Redirect("#");
        }

        public void ComentarSolicitud()
        {
            throw new System.NotImplementedException();
        }

        public ActionResult Solicitudes()
        {
            return View();
        }
        public void AprovarSolicitud(Documents doc)
        {
            throw new System.NotImplementedException();
        }

        public void RechazarSolicitud(Documents doc)
        {
            throw new System.NotImplementedException();
        }

        [HttpGet]
        public ActionResult ConsultarSolicitud()
        {
            return View();
        }

        //public ActionResult MostrarSolicitudes(string bossID,int page,int rows)
        //{
        //    int currentPage = Convert.ToInt32(page) - 1;
        //    int totalRecords = 0;
        //    var repository = new Documents();
        //    totalRecords = repository.SelectAll().Count;
        //    var totalPages = (int)Math.Ceiling(totalRecords / (float)rows);

        //    var jsonData = "";
        //    foreach(Documents doc in repository.SelectAll())
        //    {
        //        jsonData += new
        //        {
        //            total = totalPages,
        //        page,
        //        records = totalRecords,
        //        rows = (
        //            cell = new object[]
        //           {
        //               doc.apellido1,
        //               doc.apellido2,
        //               doc.aprobador1,
        //               doc.aprobador2,
        //               doc.aprobador3,
        //               doc.bossID,
        //               doc.cod_cf,
        //               doc.cod_direccion,
        //               doc.date,
        //               doc.dateFrom,
        //               doc.dateRegistered,
        //               doc.dateTo,
        //               doc.employeeID,
        //               doc.employeeName,
        //               doc.requestID,
        //               doc.state,
        //               doc.totalRequestedDays,
        //               doc.username

        //           }
        //        }
                  
        //        };
        //    }


        //    return Json(jsonData, JsonRequestBehavior.AllowGet);

        //    //throw new System.NotImplementedException();
        //}


    }
}
